急问c语言中 y[j++]=x[i];x[i]=-1; 是什么意思啊?好多的机考填空题中都有这句 什么意思呢 谢谢大家了

来源:百度知道 编辑:UC知道 时间:2024/05/23 20:12:20
帮忙举个例子 谢谢哦 我把题目写全一些 这是一道机考填空题
给定程序中 函数fun的功能是;计算形参x所指数组中N个数的平均值,将所指数组中大于平均值的数据移至数组的的前部,小于等于平均值的移至所致数组的后部,平均值作为函数返回,在主函数中输出平均值和移动后的数据。
例如:46 30 32 40 6 17 45 15 48 26 平均值是30.500000
移动后输出的数据:46 32 40 45 48 30 6 17 15 26
#defin N 10
double fun(double *x)
{ int i,j; double s,av,y[N];
s=0;
for(i=o;i<N;i++) s=s+x[i];
/*********found*********/
av=s/n;
for(i=j=p;i<N;i++)
if(x[i]>av){
/*********found********/
y[j++]=x[i];x[i]=-1;}
for(i=0;i<N;i++)
/*********found*******/
if(x[i]!=-1)j[j++]=x[i];
for(i=0;i<N;i++)x[i]=y[i];
return=av;
}

for(i=j=p;i<N;i++)
if(x[i]>av){
y[j++]=x[i];x[i]=-1;} 就是 如果x[i]比平均数av大 那么就先放到数组y里面(从前往后的放)并将x[i]的值设为-1

for(i=0;i<N;i++)
if(x[i]!=-1)y[j++]=x[i]; 现在已经将x数组里面比平均属大的放到y里并且是左面,现在将x数组里比平均数小的放入y右边 (注应该是y[j++]而不是j[j++])

for(i=0;i<N;i++)x[i]=y[i]; 最后把数组y里的值传给x 那么x就排好顺序了

y[j++]=x[i];x[i]=-1;相当于
y[j]=x[i];x[i]=-1;j++
主要就是这个y[j++]这里的j++先取当前j的值,然后在运算后对j加上1
所以效果就和上面的一样

fa

X[i]=-1是把大于平均数的数组都记为-1,目的是区分开那些不大于平均数的数组 这样的话 如果X[i]!=-1 那么就是小于平均数的那些 这样再做一个循环就把他们都赋值给Y数组了